package guyubao.com.utils;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import guyubao.com.entity.ApifoxModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class SendPushPlusMessageUtils {
    @Value("${pushPlus.token}")
    private String FIXED_TOKEN;
    @Value("${pushPlus.mode}")
    private String FIXED_MODE;
    @Value("${pushPlus.group}")
    private String FIXED_MODE_GROUP;
    
    public void send(String title, String content) {
        title += "(信息管理)";
        // 请求内容
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("token", FIXED_TOKEN);
        jsonObject.put("title", title);
        jsonObject.put("content", content);
        // 请求,并获得返回的状态码
        pushplusSend(JSON.toJSONString(jsonObject));
    }
    
    public void send(String token,String title, String content) {
        title += "(信息管理)";
        // 请求内容
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("token", token);
        jsonObject.put("title", title);
        jsonObject.put("content", content);
        // 请求,并获得返回的状态码
        pushplusSend(JSON.toJSONString(jsonObject));
    }
    
    // pushplus请求回调检测
    private void pushplusSend(String json) {
        ApifoxModel apifoxModel = postRequest("http://www.pushplus.plus/send/", json);
        if (apifoxModel == null || apifoxModel.getCode() != 200) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("token", FIXED_TOKEN);
            jsonObject.put("title", "邮件系统-发送出现错误警告");
            jsonObject.put("content", apifoxModel == null ? "请求参数不正确！" : apifoxModel);
            jsonObject.put("channel", FIXED_MODE);
            jsonObject.put("webhook", FIXED_MODE_GROUP);
            postRequest("http://www.pushplus.plus/send/", JSON.toJSONString(jsonObject));
        }
    }
    
    // 使用 WebClientUtils 发送 POST 请求
    private ApifoxModel postRequest(String url, String json) {
        if (url == null || url.isEmpty() || json == null || json.isEmpty()) {
            return null;
        }
        
        try {
            // 调用 WebClientUtils 的 sendBody 方法发送请求
            JSONObject response = WebClientUtils.sendBody(WebClientUtils.POST, url, JSON.parseObject(json));
            // 解析响应
            return new ApifoxModel(
                    response.getIntValue("code"),
                    response.getString("msg"),
                    response.getString("data")
            );
        } catch (Exception e) {
            log.error(e.getMessage());
            return null;
        }
    }
}
